6870d3981d7861b8ecd2003bb204923a7e876bfe,drools-compiler/src/test/java/org/drools/agent/KnowledgeAgentIncrementalChangeSetTest.java,KnowledgeAgentIncrementalChangeSetTest,testUpdatePackageUrlOverwriteIncremental,#,758
Before Change
List<String> list = new ArrayList<String>();
ksession.setGlobal("list", list);
ksession.fireAllRules();
ksession.dispose();
assertEquals(3, list.size());
assertTrue(list.contains("rule1"));
assertTrue(list.contains("rule2"));
assertTrue(list.contains("rule3"));
list.clear();
// have to sleep here as linux lastModified does not do milliseconds
// http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=1&t=019789
System.gc();
Thread.sleep(2000);
kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newByteArrayResource(rule1v2.getBytes()),
ResourceType.DRL);
if (kbuilder.hasErrors()) {
fail(kbuilder.getErrors().toString());
}
pkg2 = (KnowledgePackage) kbuilder.getKnowledgePackages().iterator().next();
writePackage(pkg2, pkgF2);
System.gc();
Thread.sleep(3000);
ksession = kbase.newStatefulKnowledgeSession();
list = new ArrayList<String>();
ksession.setGlobal("list", list);
ksession.fireAllRules();
ksession.dispose();
assertEquals(2, list.size());
After Change
List<String> list = new ArrayList<String>();
ksession.setGlobal( "list",
list );
FactHandle h1 = ksession.insert( "String1" );
ksession.fireAllRules();
assertEquals( 3,
list.size() );
assertTrue( list.contains( "rule1" ) );
assertTrue( list.contains( "rule2" ) );
assertTrue( list.contains( "rule3" ) );
list.clear();
kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newByteArrayResource( createVersionedRule( null,
new String[]{"rule1"},
null,
"String()",
"2" ).getBytes() ),
ResourceType.DRL );
if ( kbuilder.hasErrors() ) {
fail( kbuilder.getErrors().toString() );
}
pkg2 = (KnowledgePackage) kbuilder.getKnowledgePackages().iterator().next();
writePackage( pkg2,
pkgF2 );
scan( kagent );
ksession.fireAllRules();
assertEquals( 1,
list.size() );
assertTrue( list.contains( "rule1-V2" ) );
list.clear();
ksession.retract( h1 );
ksession.insert( "String2" );
ksession.fireAllRules();
assertEquals( 2,
list.size() );
assertTrue( list.contains( "rule1-V2" ) );
assertTrue( list.contains( "rule2" ) );
ksession.dispose();
kagent.dispose();
}